
#include "nane/FileArchiveSystem/Directory/DirectoryFileArchive.h"
#include "nane/core/crt/filesystem.h"
#include "nane/core/assert.h"

namespace nane 
{
    ////////////////////////////////////////////////////////////////////////////////////////////////
    DirectoryFileArchive::DirectoryFileArchive()
    {
        
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    DirectoryFileArchive::~DirectoryFileArchive()
    {
        
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    bool DirectoryFileArchive::Initialize( const char* _filename )
    {
        m_path = _filename;
        if( m_path.empty() == false && *m_path.rbegin() != '/' )
        {
            m_path.push_back('/');
        }
        return true;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void DirectoryFileArchive::Shutdown()
    {
        m_path.clear();
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    IReadFile* DirectoryFileArchive::OpenFile( const char* _filename )
    {
        std::string fullname;
        MakeFullpath(_filename, &fullname);
        IReadFile* fileInterface = FileSystemHolder<IFileSystem>::Instance()->OpenReadFile(fullname.c_str());
        return fileInterface;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void DirectoryFileArchive::MakeFullpath( const char* _path, std::string* _fullpath )
    {
        NANE_ASSERT_R( _fullpath != NULL, "Invalid parameter" );
        *_fullpath = m_path;
        _fullpath->append(_path);
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
}   // namespace nane
